package com.jml.transaction.jdbc事务;


import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;
import java.sql.Types;

public class UserServiceImpl implements UserService {

	private JdbcTemplate jdbcTemplate ;

	public void setDataSource(DataSource dataSource){
		this.jdbcTemplate = new JdbcTemplate(dataSource);
	}

	@Override
	public void save(User user) throws Exception {
		jdbcTemplate.update("insert into user (name,age,sex) values (?,?,?)",
				new Object[]{user.getName(),user.getAge(),user.getSex()},
				new int[]{Types.VARCHAR,Types.INTEGER,Types.VARCHAR});
		//jdbc事务，再在这里抛异常不会保存数据，会回滚
		//注意默认情况下Spring中的事务处理只对RuntimeException方法进行回滚，
		// 所以如果此处将 RuntimeException替换成普通的Exception不会产生回滚效果。
		throw new RuntimeException("xx");
//		throw new Exception("xx");
	}

}
